package com.db;

import java.util.List;

import com.util.DataBaseUtil;

public class ExportTable {
	
	/**
	 * 导出表全部数据到其他数据源的表中
	 * 注意：两个表的结构必须完全一致
	 * @param dbConn	导出数据源
	 * @param dbConn2	导入数据源
	 * @param tableName 表名
	 * @param databaseType 导出数据源的数据库类型
	 * @param num	每次导入条数
	 */
	public static void importTable(DBConn dbConn,DBConn dbConn2,String tableName,int num, String databaseType, String orderby) {
		String sql = "select count(*) from " + tableName ;
		int count = dbConn.selectCount(sql) ;
		int size = count % num == 0 ? count / num : count / num + 1 ;
		System.out.println("开始导出表" + tableName + "到目标数据库");
		System.out.println("共" + size + "批数据");
		int index = 0 ;
		for(int i = 0; i < size; i ++) {
			System.out.print("开始导入第" + i + "批            ");
			int start= i * num ;
			int end = start + num ;
			
			List<String> list = dbConn.insertSQL(DataBaseUtil.pageSql(tableName, start, end, databaseType, orderby), tableName) ;
			for(String insert : list) {
				dbConn2.insert(insert) ;
				//System.out.println(++index + ",");
			}
			System.out.println("导入第" + i + "批完成");
		}
		System.out.println("导出表" + tableName + "到目标数据库完成");
	}

	/**
	 * 导出表全部数据到其他数据源的表中
	 * 注意：两个表的结构必须完全一致
	 * @param dbConn	导出数据源
	 * @param dbConn2	导入数据源
	 * @param tableName 表名
	 * @param databaseType 导出数据源的数据库类型
	 * @param num	每次导入条数
	 */
	public static void importTable(DBConn dbConn,DBConn dbConn2,String tableName, String importTableName, int num, String databaseType, String orderby) {
		String sql = "select count(*) from " + tableName ;
		int count = dbConn.selectCount(sql) ;
		int size = count % num == 0 ? count / num : count / num + 1 ;
		System.out.println("开始导出表" + tableName + "到目标数据库 " + importTableName);
		System.out.println("共" + size + "批数据");
		int index = 0 ;
		for(int i = 0; i < size; i ++) {
			System.out.print("开始导入第" + i + "批            ");
			int start= i * num ;
			int end = start + num ;
			
			List<String> list = dbConn.insertSQL(DataBaseUtil.pageSql(tableName, start, end, databaseType, orderby), importTableName) ;
			for(String insert : list) {
				dbConn2.insert(insert) ;
				//System.out.println(++index + ",");
			}
			System.out.println("导入第" + i + "批完成");
		}
		System.out.println("导出表" + tableName + "到目标数据库" + importTableName + "完成");
	}
}
